package leetcode.day_2020_2021_2_1_2021_2_7;

/**
 * 28. 实现 strStr()
 * https://leetcode-cn.com/problems/implement-strstr/
 */
public class LeetCode0028 {

    public int strStr(String haystack, String needle) {
        if(needle.length() == 0)
            return 0;
        // 模式串长度大于目标字符串，返回-1
        if(needle.length() > haystack.length())
            return -1;
        // 转为字符数组
        char[] haystackArr = haystack.toCharArray();
        char[] needleArr = needle.toCharArray();
        // 开始匹配
        for(int i=0; i<haystackArr.length; i++) {
            // 记录匹配起始位置
            int index = i;
            for(int j=0; j<needleArr.length; j++) {
                if(needleArr[j] != haystackArr[index]) {
                    break;
                }
                // 每次比较后，判断j是否达到模式串的长度，等于说明
                // 找到了匹配的字符串
                if(j == needleArr.length-1)
                    return i;
                // 如果index大于等于目标字符串的长度，说明匹配失败
                index = index +1;
                if(index >= haystackArr.length)
                    return -1;
            }
        }
        return -1;
    }
}
